﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Common;
using BusinessLayer;
using BoletoElectronicoDesktop.AbmClientes;


namespace BoletoElectronicoDesktop.AbmTarjetas
{

    public partial class FormAbmTarjetas : FormAddModify
    {
        public dsBoleto.ClienteRow Cliente;
        public FormAbmTarjetas(int Id, Util.Funcionalidad Use):base(Id, Use)
        {
            this.Id = Id;
            if (Id != 0)
            {
                Uso = FormAddModify.CallType.Modify;
            }
            Load += new EventHandler(FormAbmTarjetas_Load);

            InitializeComponent();
        }

        public FormAbmTarjetas(Util.Funcionalidad Use)
            : base(Use)
        {
            InitializeComponent();
        }
        public BoletoElectronicoDesktop.FormAddModify.CallType Uso { get; set; }
        public int Id { get; set; }



        private void FormAbmTarjetas_Load(object sender, EventArgs e)
        {
            switch (Uso)
            {
                case BoletoElectronicoDesktop.FormAddModify.CallType.Add:
                    break;
                case BoletoElectronicoDesktop.FormAddModify.CallType.Modify:
                    cargarTarjeta(Id);
                    break;
                default:
                    break;
            }
        }
        public void setCliente()
        {
            txtCliente.Text = Cliente.Apellido + ", " + Cliente.Nombre;
        }
        private void cargarTarjeta(int id)
        {
            dsBoleto ds = BizTarjeta.GetTarjeta(Id);
            txtNumTarjeta.Text = ds.Tarjeta[0].NumeroTarjeta.ToString();
            txtCliente.Text = ds.Cliente[0].Apellido + ", " + ds.Cliente[0].Nombre;
        }
        private void btSeleccionar_Click(object sender, EventArgs e)
        {
            try
            {
                BuscadorCliente frm;
                if (this.MdiParent.MdiChildren.Any(f => f is BuscadorCliente))
                {
                    frm = (BuscadorCliente)this.MdiParent.MdiChildren.First(f => f is BuscadorCliente);
                }
                else
                {
                    frm = new BuscadorCliente(Util.Funcionalidad.ClienteConsulta, 0);
                    frm.MdiParent = this.MdiParent;
                }

                frm.Show();
            }
            catch (ApplicationException ex)
            {
                MessageBox.Show(ex.Message);
            }

            //txtCliente.Text = frm.rCliente.Apellido + ", " + frm.rCliente.Nombre;

        }

        private void btGuardar_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                dsBoleto.TarjetaDataTable dtTarjeta = new dsBoleto.TarjetaDataTable();
                dsBoleto.TarjetaRow drTarjeta = dtTarjeta.NewTarjetaRow();
              
                drTarjeta.NumeroTarjeta = int.Parse(txtNumTarjeta.Text);
                drTarjeta.IdCliente = Cliente.IdCliente;

                if (Uso == BoletoElectronicoDesktop.FormAddModify.CallType.Add)
                    BizTarjeta.InsertTarjeta(drTarjeta);
                else if (Uso == BoletoElectronicoDesktop.FormAddModify.CallType.Modify)
                {
                    drTarjeta.IdTarjeta = Id;
                    BizTarjeta.UpdateTarjeta(drTarjeta);
                }

                Close();
            }
        }

        bool validarDatos()
        {
            bool validado = true;
            string errores = "";

            if (string.IsNullOrEmpty(txtCliente.Text))
            {
                validado = false;
                errores += "Se debe elegir un Cliente. \n";
            }
          
            if (string.IsNullOrEmpty(txtNumTarjeta.Text))
            {
                validado = false;
                errores += "Se debe completar el número de tarjeta. \n";
            }
            else
            {

                int numeroTarjeta;
                if (!int.TryParse(txtNumTarjeta.Text, out numeroTarjeta))
                {
                    validado = false;
                    errores += "El número de tarjeta debe ser númerico. \n";
                }
                else
                {
                    if (numeroTarjeta <= 0)
                    {
                        validado = false;
                        errores += "El número de tarjeta debe ser positivo. \n";
                    }
                }
            }
           

            if (!validado)
            {
                MessageBox.Show(errores);
            }
            return validado;
        }
    }
}
